package com.zyz.study.config;  // 定义包名

import io.swagger.v3.oas.models.ExternalDocumentation;  // 导入Swagger OpenAPI外部文档类
import io.swagger.v3.oas.models.OpenAPI;  // 导入Swagger OpenAPI主类
import io.swagger.v3.oas.models.info.Info;  // 导入Swagger文档信息类
import io.swagger.v3.oas.models.servers.Server;  // 导入Swagger服务器信息类
import org.springframework.beans.factory.annotation.Value;  // 导入Spring注解，用于注入配置文件值
import org.springframework.context.annotation.Bean;  // 导入Spring注解，用于定义Bean
import org.springframework.context.annotation.Configuration;  // 导入Spring注解，标注配置类

import java.util.List;  // 导入Java工具包中List接口

@Configuration  // 声明这是一个Spring配置类，Spring容器会扫描并加载此类
public class SwaggerConfig {

    @Value("${server.port}")  // 从配置文件中读取server.port属性值，注入到serverPort变量中
    private String serverPort;

    @Bean  // 声明该方法返回的对象交给Spring管理，作为Bean注入容器
    public OpenAPI springBootOpenAPI() {
        return new OpenAPI()  // 创建OpenAPI对象，代表Swagger的API文档配置
                .info(new Info()  // 设置API文档的基本信息
                        .title("Swagger 3.0 文档"))  // 设置文档标题为“Swagger 3.0 文档”
                .servers(List.of(new Server()  // 设置API服务器信息，支持多个服务器，这里只设置了一个
                        .url("http://localhost:" + serverPort)  // 拼接服务器URL地址，使用本地地址加端口
                        .description("本地环境")))  // 服务器描述为“本地环境”
                .externalDocs(new ExternalDocumentation());  // 设置外部文档（这里未配置具体内容，使用默认空对象）
    }
}
